/**********************
 kc.h
**********************/

#ifndef _KC_H
#define _KC_H

#include "defs.h"

#define WHITE_TXT 0x07 // Atributo de video. Letras blancas, fondo negro
#define COLS        80
#define FILAS       25
#define MAXPROCESOS 64

void k_clear_screen();
void setup_IDT_entry (DESCR_INT *item, byte selector, dword offset, byte access,
			 byte cero);
PROCESO *GetProcessByName(char *proceso);
PROCESO *GetProcessByPid(int pid);
PROCESO* GetProcessByPosition(int i);
int     GetPid(void);
void    exec(char *nombre, int (*proceso)(int, char **), int enBackground);
char *  getVideo(void);
char *  getBuffer(void);
void    CrearProceso(char *nombre, int (*proceso)(int, char **), int tty,
        int argc, char **argv, int prioridad, int enBackground, int stacksize);
//int ArmaStackFrame(int (*proceso)(int, char **), int argc, char **argv,
//        int bottom, void (*limpia));
int     GetNextProcess(int esp);
PROCESO *GetNextTask(void);
void* 	GetTemporaryESP(void);
int ProcesoExiste(int pid);
void  	SaveESP(int ESP);
void  	Limpia(void);
int   	Nada(int argc, char **argv);
int     shmemLock(int id);
int     shmemUnlock(int id);
void  	initScheduler(void);
int   	NoHayProcesos(void);
void* 	Malloc(int size);
void* 	CallocTerm(int size);
void*   userMalloc(int size);
void 	sleep(int time);
void    Kill(int pid);
void    matarHijos(int pidPadre);
void    Renice(int pid,int prioridad);
void    Top(void);
int     bajarPaginasAnterior(int pid);
int     levantaPaginasNuevo(int pid);
int     test(int argc, char **);
void    fuerzaCambio(void);
int     resto(int * num,int divisor);
int     bloqueaProceso(int pid, int codBloqueo);
int     desbloqueaProceso(int pid);
int     estaBloqueado(int pid);

#endif

